package com.hong.utils;

import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginIntercepter implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 判断是否需要去拦截(ThreadLoacl中是否有用户）
        if(UserHolder.getUser() == null){
            // 没有用户信息 需要拦截 设置状态码
            response.setStatus(401);
            return false;
        }
        // 有用户 则放行
        return true;
    }

    // 请求已经经过相应的控制器（Controller）方法处理并返回了结果，但在渲染视图之前。
    // afterCompletion方法会在这个时刻被调用。
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 移除用户 避免内存泄露
        UserHolder.removeUser();
    }
}
